Conventional data packet networks often make use of lossy communication channels, such as wireless communication channels. Although convenient, wireless communication channels do suffer from a number of sources of noise and other impediments which lead to packet loss or corruption during transport. Therefore, it is often the case that data must be retransmitted in order to ensure it is delivered correctly to a receiver. Conventional applications, such as email and web browsing, tolerate relatively long latencies in transmissions and retransmissions, and so communication protocols for delivery of information over computer networks were usually architected on such assumptions.
Modern data streaming applications, such as applications which permit audio and video streaming over the Internet, are less tolerant of retransmission latencies, indeed, of latencies in general. Data streams in applications like video streaming need to be received at an end user device, such as a monitor or an audio player, in near real time so as to provide an acceptable end user viewing experience. This is not true of applications such as email, which can tolerate relatively long latencies without degrading the end user experience to any appreciable degree.
In video-related applications, a video stream is represented by a sequence of images. An encoder analyzes the information in the video stream, discards information that is indiscernible to the viewer and generates data frames for transmission. For example, video encoding techniques, such as those defined by the Motion Pictures Expert Group (MPEG), often break images into macroblocks, each macroblock corresponding to a defined (e.g., 16×16 pixel) area of the original image. The encoder then uses mathematical transforms (e.g., the discrete cosine transform (DCT)) to decompose the macroblocks into frequency components. Each component is weighted by a respective coefficient, and these coefficients are quantized, variable length encoded to remove zeros, and finally, entropy coded using, for example Huffman coding. The result is an encoded version of a frame and in some cases individual frames can be built from reference frames to reduce the overall number of bits required to encode the subject frame. The encoded video frames are typically distinct from data frames that may be used with other applications such as email.
Unfortunately, most wireless networks in use today rely on the transmission control protocol and Interment protocol (TCP/IP) or the user datagram protocol and Internet protocol (UDP/TP) to handle data retransmissions. TCP was, however, originally intended for wired data communication networks where network congestion was the major cause of packet loss and so relatively lengthy latencies are involved where retransmissions are concerned. Accordingly, TCP/IP is not a truly effective mechanism for managing retransmissions across a lossy, but not necessarily congested, network. On the other hand UDP does not perform any retransmissions while delivering data, and as a result produce visible errors that lead to quality of experience (QoE) degradation
Traditionally, when one or more packets are lost in a data frame, these lost packets are retransmitted. If a frame or a group of frames is lost, the lost frame or frames are retransmitted. The size of the retransmitted data packets or data frames can be large, resulting in lower success rate in retransmission, which further requires more retransmissions. This introduces significant latency in data transmissions, especially when the transmissions take place over lossy channels. Further, today's retransmission methods set a fixed number of retransmission attempts regardless of the type of packets or frames being transmitted. Such retransmission mechanisms can not easily adapt to changing network conditions and can lead to an overall lower success rate in data transmission. These inefficiencies are magnified when time-sensitive data streams, such as video or audio streams, are transmitted over a lossy channel, as is often the case with wireless links in a network.